using System;
using System.Collections;
using Rdl;

namespace GTame.ReportParser
{

    public class ThreeDPropertiesType
    {

        private Nullable<bool> _Clustered;
        private Nullable<uint> _DepthRatio;
        private ThreeDPropertiesTypeDrawingStyle _DrawingStyle;
        private Nullable<bool> _Enabled;
        private Nullable<uint> _GapDepth;
        private Nullable<uint> _HeightRatio;
        private string _Inclination;
        private Nullable<uint> _Perspective;
        private ThreeDPropertiesTypeProjectionMode _ProjectionMode;
        private string _Rotation;
        private ThreeDPropertiesTypeShading _Shading;
        private Nullable<uint> _WallThickness;

        public Nullable<bool> Clustered
        {
            get
            {
                return _Clustered;
            }
            set
            {
                _Clustered = value;
            }
        }

        public Nullable<uint> DepthRatio
        {
            get
            {
                return _DepthRatio;
            }
            set
            {
                _DepthRatio = value;
            }
        }

        public ThreeDPropertiesTypeDrawingStyle DrawingStyle
        {
            get
            {
                return _DrawingStyle;
            }
            set
            {
                _DrawingStyle = value;
            }
        }

        public Nullable<bool> Enabled
        {
            get
            {
                return _Enabled;
            }
            set
            {
                _Enabled = value;
            }
        }

        public Nullable<uint> GapDepth
        {
            get
            {
                return _GapDepth;
            }
            set
            {
                _GapDepth = value;
            }
        }

        public Nullable<uint> HeightRatio
        {
            get
            {
                return _HeightRatio;
            }
            set
            {
                _HeightRatio = value;
            }
        }

        public string Inclination
        {
            get
            {
                return _Inclination;
            }
            set
            {
                _Inclination = value;
            }
        }

        public Nullable<uint> Perspective
        {
            get
            {
                return _Perspective;
            }
            set
            {
                _Perspective = value;
            }
        }

        public ThreeDPropertiesTypeProjectionMode ProjectionMode
        {
            get
            {
                return _ProjectionMode;
            }
            set
            {
                _ProjectionMode = value;
            }
        }

        public string Rotation
        {
            get
            {
                return _Rotation;
            }
            set
            {
                _Rotation = value;
            }
        }

        public ThreeDPropertiesTypeShading Shading
        {
            get
            {
                return _Shading;
            }
            set
            {
                _Shading = value;
            }
        }

        public Nullable<uint> WallThickness
        {
            get
            {
                return _WallThickness;
            }
            set
            {
                _WallThickness = value;
            }
        }

        public ThreeDPropertiesType()
        {
            _Clustered = new Nullable<bool>[]();
            _DepthRatio = new Nullable<uint>[]();
            _Enabled = new Nullable<bool>[]();
            _GapDepth = new Nullable<uint>[]();
            _HeightRatio = new Nullable<uint>[]();
            _Perspective = new Nullable<uint>[]();
            _WallThickness = new Nullable<uint>[]();
        }

        public ThreeDPropertiesType Write()
        {
            ThreeDPropertiesType threeDPropertiesType = new ThreeDPropertiesType();
            ArrayList arrayList1 = new ArrayList();
            ArrayList arrayList2 = new ArrayList();
            if (_Clustered.get_HasValue())
            {
                arrayList1.Add(_Clustered);
                arrayList2.Add(1);
            }
            if (_DepthRatio.get_HasValue())
            {
                arrayList1.Add(_DepthRatio);
                arrayList2.Add(2);
            }
            arrayList1.Add(_DrawingStyle);
            arrayList2.Add(3);
            if (_Enabled.get_HasValue())
            {
                arrayList1.Add(_Enabled);
                arrayList2.Add(4);
            }
            if (_GapDepth.get_HasValue())
            {
                arrayList1.Add(_GapDepth);
                arrayList2.Add(5);
            }
            if (_HeightRatio.get_HasValue())
            {
                arrayList1.Add(_HeightRatio);
                arrayList2.Add(6);
            }
            if (_Inclination != null)
            {
                arrayList1.Add(_Inclination);
                arrayList2.Add(7);
            }
            if (_Perspective.get_HasValue())
            {
                arrayList1.Add(_Perspective);
                arrayList2.Add(8);
            }
            arrayList1.Add(_ProjectionMode);
            arrayList2.Add(9);
            if (_Rotation != null)
            {
                arrayList1.Add(_Rotation);
                arrayList2.Add(10);
            }
            arrayList1.Add(_Shading);
            arrayList2.Add(11);
            if (_WallThickness.get_HasValue())
            {
                arrayList1.Add(_WallThickness);
                arrayList2.Add(12);
            }
            threeDPropertiesType.Items = arrayList1.ToArray();
            threeDPropertiesType.ItemsElementName = (ItemsChoiceType26[])arrayList2.ToArray(typeof(ItemsChoiceType26));
            arrayList2 = arrayList1 = null;
            return threeDPropertiesType;
        }

    } // class ThreeDPropertiesType

}

